package com.cyj.dream.core.constant.users;

import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;

/**
 * @Description: 性别转换器
 * @BelongsProject: dream-DreamChardonnay
 * @BelongsPackage: com.cyj.dream.core.constant.users
 * @Author: ChenYongJia
 * @CreateTime: 2021-4-1 09:31:22
 * @Email: chen87647213@163.com
 * @Version: 1.0
 */
public class SexConverter implements Converter<Integer> {

    /**
     * Java 类型键
     *
     * @return
     */
    @Override
    public Class supportJavaTypeKey() {
        return Integer.class;
    }

    /**
     * excel 类型键
     *
     * @return
     */
    @Override
    public CellDataTypeEnum supportExcelTypeKey() {
        return CellDataTypeEnum.STRING;
    }

    /**
     * 这里读的时候会调用
     *
     * @param cellData            NotNull
     * @param contentProperty     Nullable
     * @param globalConfiguration NotNull
     * @return
     */
    @Override
    public Integer convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
        switch (cellData.getStringValue()) {
            case "男":
                return 1;
            case "女":
                return 2;
            default:
                return 0;
        }
    }

    /**
     * 这里是写的时候会调用 不用管
     *
     * @param value               NotNull
     * @param contentProperty     Nullable
     * @param globalConfiguration NotNull
     * @return
     */

    @Override
    public CellData convertToExcelData(Integer value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
        switch (value) {
            case 1:
                return new CellData("男");
            case 2:
                return new CellData("女");
            default:
                return new CellData(String.valueOf(value));
        }
    }

    /**
     * controller 层读取 excel
     * 读取excel是如何匹配的，这里我们传入的还是原来的 Student.class在这里插入图片描述
     * 会根据@ExcelProperty 名字去匹配，如果名字重复，会导致只有一个字段读取到数据
     * 也可以通过index 去匹配类似这样
     *
     * 强制读取第三个 不建议 index 和 name 同时用，要么一个对象只用index，要么一个对象只用name去匹配
     *@ExcelProperty(index = 2)
     * @return
     */
    /*@PostMapping("upload")
    @ResponseBody
    public String upload(MultipartFile file) throws IOException {
        //写法一
        // sheet里面可以传参 根据sheet下标读取或者根据名字读取 不传默认读取第一个
        EasyExcel.read(file.getInputStream(), Student.class, new StudentListener(studentDao)).sheet().doRead();
        // 写法2：
        *//*ExcelReader excelReader = EasyExcel.read(file.getInputStream(), Student.class, new StudentListener(studentDao)).build();
        ReadSheet readSheet = EasyExcel.readSheet(0).build();
        excelReader.read(readSheet);
        // 这里千万别忘记关闭，读的时候会创建临时文件，到时磁盘会崩的
        excelReader.finish();*//*
        return "success";
    }*/

}
